﻿using System;
using System.Collections.Generic;
using System.Text;
using BussinessLogicTecnoPez;
using BussinessLogicTecnoPez.Tipos_Comunes;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

namespace BussinessLogicTecnoPez.Produccion.Compras
{
    [Serializable]
    [DBTable("PROVEEDORES")]
    public class Proveedor: EntityBase<Proveedor>
    {
        private int _idProveedor;
        private string _razonSocial;
        private string _direccion;
        private TipoDocumento _objTipoDocumento;
        private string _numeroDocumento;
        private string _correoElectronico;
        private string _telefono;
        private string _codigo;

        [DBField("IDPROVEEDOR",true,true)]
        [FriendlyName("Id",false)]
        public int IdProveedor
        {
            get { return _idProveedor; }
            set { _idProveedor = value; }
        }

        [NotNullValidator(MessageTemplate = "Razón social: Debe tener algun valor.")]
        [StringLengthValidator(0, 50, MessageTemplate = "Razón social: Tamaño máximo es de 50 carateres.")]
        [TecnoPezNoEmptyStringValidator("Razón social: Debe tener algun valor.")]
        [DBField("RAZONSOCIAL",false,false)]
        [FriendlyName("Razón Social",true,true, FriendlyName.FilterType.String)]
        public string RazonSocial
        {
            get { return _razonSocial; }
            set { _razonSocial = value; }
        }

        [DBField("DIRECCION",false,false)]
        [FriendlyName("Dirección",true)]
        public string Direccion
        {
            get { return _direccion; }
            set { _direccion = value; }
        }

        [DBField("IDTIPODOCUMENTO",false,false,true,"IDTIPODOCUMENTO")]
        [FriendlyName("Tipo Documento",false)]
        public TipoDocumento TipoDocumento
        {
            get { return _objTipoDocumento; }
            set { _objTipoDocumento = value; }
        }

        [DBField("NUMERODOCUMENTO",false,false)]
        [FriendlyName("Número Documento",false)]
        public string NumeroDocumento
        {
            get { return _numeroDocumento; }
            set { _numeroDocumento = value; }
        }

        [DBField("CORREOELECTRONICO",false,false)]
        [FriendlyName("Correo Electrónico",false)]
        public string CorreoElectronico
        {
            get { return _correoElectronico; }
            set { _correoElectronico = value; }
        }

        [DBField("TELEFONO",false,false)]
        [FriendlyName("Teléfono",false)]
        public string Telefono
        {
            get { return _telefono; }
            set { _telefono = value; }
        }

        [NotNullValidator(MessageTemplate = "Código: Debe tener algun valor.")]
        [StringLengthValidator(0, 10, MessageTemplate = "Código: Tamaño máximo es de 10 carateres.")]
        [TecnoPezNoEmptyStringValidator("Código: Debe tener algun valor.")]
        [DBField("CODIGO",false,false)]
        [FriendlyName("Código",true,true, FriendlyName.FilterType.String)]
        public string Codigo
        {
            get { return _codigo; }
            set { _codigo = value; }
        }

        public override string ToString()
        {
            return this.RazonSocial;
        }
    }
}
